linux vim
vi早起版本的改进,vi improved, 支持高亮,自动缩进等
vim 存在三种模式: 命令模式,输入模式,编辑模式
vim操作
文件概览
vim编辑文件,初次打开,左下方显示,文件名、总行数、总字符数
直接定位到指定行
1 | #定位行 |
进入输入模式
按下I、i、O、o、A、a等键来完成
- i ——在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
- I ——在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首再执行i命令
- a ——在当前光标所在位置之后插入随后输入的文本
- A ——在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令
- o ——在光标所在行的下面插入新的一行。光标停在空行的行首,等待输入文本
- O ——在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
在Linux纯字符界面中,默认是不支持中文输入的。如果想要输入中文,则有三种方法。
(1)安装中文语言支持和图形界面,在图形界面下输入中文,使用gVim(Vim的图形前端)。
(2)安装中文语言支持,使用远程连接工具(如PuTTY),在远程连接工具中调整中文编码,进行中文输入。
(3)倘若非要在Linux纯字符界面中输入中文,则可以安装中文插件,如zhcon
光标移动
字符级别移动 - 箭头,hjkl
单词级别移动 - w b e
行首、行尾级别移动 - 0 $
待验证
移动到一行指定字符位置 fp
移动到匹配的括号处 %
移动到指定的行nG
查找指定字符
/ 向下查找
? 向上查找
:set ic 忽略大小写
/^root 开始, /root$结尾的行
删除与copy
命令行模式下
x 删除光标后,单个字符
3x ,删除光标后,3个字符
D ,删除光标后面的整行字符
dd 删除光标所在行
4dd, 删除光标所在行以及后面的3行
:1,5d 删除第一行~第五行
dG, 删除光标后,所有内容
y,复制光标所在行,并下移
ny,复制光标所在行多次,
p,粘贴内容到光标所在位置后面
P,粘贴内容到光标所在位置前面
u 撤销所做内容,多次撤销操作多次即可
j 2行并在一行
文件保存
w 保存不退出
q 不保存退出
! 强制执行
- wq 保存且退出
- w /tmp/ss.txt 另存为
- shift+z 两次,也会退出 ,q!强制退出
文件编辑
:set nu ,显示行号
可以在当前登录用户目录下,添加配置~/.vimrc,配置默认显示行号
1
2
3 set nu
# 命令行模式,忽略大小写
set ic
条件判定
命令行取值
1 | ./deploy_tar.sh xx.tar.gz |
命令行默认值
1 | distDir=${2:-"build"} |
服务器ip
1 HOST_IP = ${ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2} '| cut -f1 -d '/' }
时间格式化
1 dateTime = $(date +%Y-%m-%d-%s)
正则判定
1
2
3
4
5
6
7 if [[ $packageName == *.tar ]];then
//do something
elif [[$packageName == *.tar.gz ]];then
//
elif [[$packageName == *.zip ]] ; then
//
fi
获取curl结果
1 | result = $(curl -X GET url) |
多窗口编辑
逐个打开
1
2
3
4
5
6 #先打开
vim test.sh
#命令模式输入,水平共享屏幕:
sp ./demo.sh
vp ./demo.sh
同时打开,Ctrl+ww切换
1 | vim -o demo.sh test.sh |
编辑过程中,查看命令结果
1 | #命令行模式 |
编辑一个文件时,r命令导入另一个文件内容
连续行注释
利用正则区域替换
1 | #命令行模式,开启注释 |
当然也可以map|unmap自定义快捷键,实现
宏命令处理,当然也可用与不连续行处理
- 命令行模式,输入q<宏名称>,开始recording
- 然后进入编辑模式,进行编辑,然后退出到命令行模式,按下q退出宏记录,
- 在其余的行,命令行模式,调用@<宏>即可
unix2dos | dos2unix
需要手动安装
1 | dos2unix file.txt |
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏